﻿$(function () {  //document.Ready()
    //Handler para boton Guardar All
    $("#save-all-vinculacion").on({
        click: function (event) {
            event.preventDefault();
            //Limpiamos cualquier mensaje Satisfactorio o de Error
            var uptID = this.getAttribute("data-ajax-update");
            $(uptID).text("");

            //Comprobamos que el Link no este deshabilitado
            if (!$(this).hasClass("link-disable")) {
                //Mensaje de Confirmacion de cambios
                var confirm;
                confirm = this.getAttribute("data-ajax-confirm");
                if (confirm && !window.confirm(confirm)) {
                    return;
                }

                //Desactivamos el boton para que no pueda ser utilizado
                $(this).removeClass("button-link");
                $(this).addClass("link-disable");

                //Mostramos la animacion de espera de los datos
                var idLoad = $(this).attr("data-loading-id");
                $(idLoad).fadeIn(150);

                //PRIMERO: Debemos de identificar los grados que han sido seleccionados
                var arrayGrados = [];
                $('.checklist-input:checked').each(function () {
                    arrayGrados.push($(this).val());
                });

                //Verificamos que se haya seleccionado algun grado, de lo contrario devolvemos un error
                if (arrayGrados.length == 0) {
                    ShowError(uptID, idLoad, this, "Lo sentimos, no se han podido guardar los datos debido a que no se ha seleccionado ningún grado al cual desea asignar las vinculaciones de Profesor-Materia.");
                    return;
                }

                //SEGUNDO: Identificamos las materias en los cuales seleccionaron profesor
                var arrayMaterias = [];
                var keyMat = '';
                $('.lst-prf[value!=""]').each(function () {
                    keyMat = $(this).parent().attr('data-id-mat');
                    arrayMaterias.push(keyMat + '-' + $(this).val())
                });

                //Verificamos que se haya seleccionado algun grado, de lo contrario devolvemos un error
                if (arrayMaterias.length == 0) {
                    ShowError(uptID, idLoad, this, "Lo sentimos, no se han podido guardar los datos debido a que no se asigno ningún profesor en el listado de materias.");
                    return;
                }

                //Si ya tenemos todas las colecciones de datos armados, ahora pasamos a mandar los datos por medio de AJAX
                var urlData = $(this).attr("href");
                var btn = this
                $.ajax({
                    url: urlData,
                    type: 'POST',
                    dataType: "json",
                    traditional: true,
                    data: { ag: arrayGrados,
                        am: arrayMaterias
                    },
                    success: function (data) {
                        $(idLoad).hide();
                        if (data.Success) {
                            $(uptID).removeClass("result-error");
                            $(uptID).addClass("result-success");
                            $(uptID).text(data.Message);
                            $(btn).removeClass("link-disable");
                            $(btn).addClass("button-link");
                            location.reload();
                        }
                    },
                    error: function (jqXhr, textStatus, errorThrown) {
                        ShowError(uptID, idLoad, this, jqXhr);
                    }
                });
            } else return
        }
    });

    var g = $("#lstGroupG").val();
    var a = $('#lstAnios').val();
    if ((a) && (g)) PreLoad(g, a);
    else {
        $("#paso-2").hide();
        $("#paso-3").hide();
    }
});

function ShowError(IDElem, IDLoad, IDButton, ErrorMsg) {
    $(IDLoad).hide();
    $(IDElem).removeClass("result-success");
    $(IDElem).addClass("result-error");
    $(IDElem).text(ErrorMsg);
    $(IDButton).removeClass("link-disable");
    $(IDButton).addClass("button-link");
};

//Handler para cuando cambia el ListBox
$("#lstGroupG").live("change", function () {
    var value = $(this).val();
    var anio = $('#lstAnios').val();
    if ((value) && (anio)) PreLoad(value, anio);
});

//Handler para cuando cambia el ListBox
$("#lstAnios").live("change", function () {
    var a = $(this).val();
    var g = $('#lstGroupG').val();
    if ((g) && (a)) PreLoad(g, a);
});

function PreLoad(idgroup, anio) {
    $("#save-all-vinculacion").hide();
    $("#paso-2").attr("data-id-group", idgroup);
    $("#paso-2").attr("data-anio", anio);
    $("#paso-2").show();
    $("#paso-3").show();
    $("#paso-4").show();

    $('#tbl-asig').hide()
    $('#loading-panel-3').fadeIn(150);
    $('#tbl-asig').load("/AEscolar/_ViewAsociacionesMPG", { Titulo: $("#lstGroupG option:selected").text(), IDGroup: idgroup, Anio: anio }, function (datos, status, xhr) {
        $('#loading-panel-3').hide();
        if (status == "error") {
            alert("Ocurrio un error al intentar recuperar los datos.");
        } else {
            $('#tbl-asig').fadeIn(150);
            $('#tbl-asig').html(datos);
        }
    });

    //Cargamos el CheckList de los Grados
    $("#listado-grados").CheckBoxList({ IDGroup: idgroup, Anio: anio }, '/AEscolar/_ListGrados_ByGroupAndAnio',
                                          { animationLoad: true,
                                              animationID: 'loading-panel-1',
                                              mensajeAllRegistros: 'Seleccionar todos los grados'
                                          });

    //Cargamos el CheckList de los Grados
    $("#tabla-prof-mat").LoadTablaAsignacion({ IDGroup: idgroup },
                                                 { LoadMaterias: '/AEscolar/_ListMaterias',
                                                     LoadProfesores: '/AEscolar/_ListComboBoxProfesores'
                                                 },
                                                 { animationLoad: true,
                                                     animationID: 'loading-panel-2'
                                                 });

};